package com.caunock.sqlbuilder.meta;

import com.caunock.sqlbuilder.meta.feature.ColumnType;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * 字段元数据
 *
 * @author Qinweitong
 */
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class Column<T> {

    /**
     * 字段名称
     */
    private String name;

    /**
     * 字段类型
     */
    private ColumnType type;

    /**
     * 默认值
     */
    private T defaultValue;

    /**
     * 是否自增
     */
    private boolean isAutoIncrement;

    /**
     * 是否可以为空
     */
    private boolean isNullable;

    /**
     * 是否为主键
     */
    private boolean isPrimaryKey;

    /**
     * 描述
     */
    private String comment;

    /**
     * 其他约束，如 CHECK 约束
     */
    private String constraints;
}
